/*
    <one line to give the library's name and an idea of what it does.>
    Copyright (C) 2013  <copyright holder> <email>

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
    version 2.1 of the License, or (at your option) any later version.

    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public
    License along with this library; if not, write to the Free Software
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
*/


#include "OCTTrackingImpl.h"

using namespace cv;
using namespace std;


OCTTrackingImpl::OCTTrackingImpl()
{
  sourceSetting = false;
  trackingSetting = false;
  landmarkSetting = false;
  
  octSource = new OCTSourceSetting();
  octImageProcessing = new OCTImageProcessing();
  octTrackingCore = new OCTTrackingCore();
  octLandmarkLocating = new OCTLandmarkLocating();
  //landmarks = new Landmark[4];
  
}

OCTTrackingImpl::~OCTTrackingImpl()
{
  delete octSource;
  delete octImageProcessing;
  delete octTrackingCore;
  delete octLandmarkLocating;
  //delete[] landmarks;
}

void OCTTrackingImpl::setOCTSource(const char* filename, int cols, int rows)
{
  // Single OCT image
  currentSurfaceImage = octImageProcessing->convertSurfaceToGrayImage(octSource->readSingleDatFile(filename, cols, rows));
  namedWindow("Source Image", 1);
  imshow("Source Image", currentSurfaceImage);
  
  sourceSetting = true;
}

void OCTTrackingImpl::setLandmark()
{
  landmarkSetting = true;
}

void OCTTrackingImpl::setTracking()
{
  trackingSetting = true;
}

bool OCTTrackingImpl::startTracking()
{
  if (!checkSetting())
    cout<<"Please check the setting" << endl;
  else
  {
    //
  }
}

bool OCTTrackingImpl::checkSetting()
{
  return sourceSetting && landmarkSetting && trackingSetting;
}




